-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix segmentation testing and support CPU #888
base: master
Are you sure you want to change the base?
Conversation
Job PR-888-1 is done. |
Job PR-888-2 is done. |
scripts/segmentation/test.py
Outdated
@@ -68,14 +68,14 @@ def test(args): | |||
im_paths = dsts | |||
predicts = evaluator.parallel_forward(data) | |||
for predict, impath in zip(predicts, im_paths): | |||
predict = mx.nd.squeeze(mx.nd.argmax(predict[0], 1)).asnumpy() + \ | |||
predict = mx.nd.squeeze(mx.nd.argmax(predict[0], 0)).asnumpy() + \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Following the standard practice, we use the first dimension as Batch dimension by default. Could you please still use dim=1.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed it. : )
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you please address my comment
Job PR-888-3 is done. |
@@ -68,14 +68,14 @@ def test(args): | |||
im_paths = dsts | |||
predicts = evaluator.parallel_forward(data) | |||
for predict, impath in zip(predicts, im_paths): | |||
predict = mx.nd.squeeze(mx.nd.argmax(predict[0], 1)).asnumpy() + \ | |||
testset.pred_offset | |||
predict = mx.nd.squeeze(mx.nd.argmax(predict, 1), axis=0).\ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will break existing segmentation model, which outputs a list by default.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What are the elements in the list predict
?
I think predicts
is a list of NDArray
, and predict
is a NDArray
whose shape is (1, num_cls, height, width)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
predicts is a list of list of NDArray
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you! I will check it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@zhanghang1989
Hi, I found the type of predicts
is tuple
, and the type of predict
is NDArray
.
Test script: python test.py --dataset pascal_voc --model-zoo psp_resnet101_voc
Please rebase the code to resolve conflicts since this PR has been merged into master. |
Job PR-888-4 is done. |
@@ -194,6 +194,7 @@ def benchmarking(model, args): | |||
|
|||
if __name__ == "__main__": | |||
args = parse_args() | |||
args.test_batch_size = max(1, args.ngpus) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just want to know why args.test_batch_size
here is dependent on args.ngpus
. Also since args.batch_size
is already defined, is it possible to use this one directly instead of adding a new one like test_batch_size
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the review! I have removed this line, and I will update the code later.
The test_batch_size
is defined in train.py
, and it is the batch size of testing dataset. For testing script, we should keep the consistency with training procedure.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the review! I have removed this line, and I will update the code later.
The test_batch_size
is defined in train.py
, and it is the batch size of testing dataset. For testing script, we should keep the consistency with training procedure.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know why the program gets stuck. I will check it later.
Hi, there.
In the testing script of segmentation, the shape of
predict[0]
is(num_cls, height, weight)
.In the line 71 of
scripts/segmentation/test.py
, the axis ofmx.nd.argmax
should be0
.Besides, I modify the code to support the inference of segmentation model on CPU.
Thank you!